package com.woniu.common.config;


import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Info;
import org.springdoc.core.models.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


/**
 * @Author: 朱杰
 * @Description: Knife4j整合Swagger3 Api接口文档配置类
 * @DateTime: 2025/4/28 15:03
 **/
@Configuration
public class Knife4jConfig {

    /**
     * 创建了一个api接口的分组
     * 除了配置文件方式创建分组，也可以通过注册bean创建分组
     */
    @Bean
    public GroupedOpenApi aiApi() {
        return GroupedOpenApi.builder()
                // 分组名称
                .group("ai模块")
                // 接口请求路径规则
                .pathsToMatch("/ai/**")
                .build();
    }

    @Bean
    public GroupedOpenApi contentApi() {
        return GroupedOpenApi.builder()
                // 分组名称
                .group("内容管理模块")
                // 接口请求路径规则
                .pathsToMatch("/content/**")
                .build();
    }

    @Bean
    public GroupedOpenApi mediaApi() {
        return GroupedOpenApi.builder()
                // 分组名称
                .group("媒资管理模块")
                // 接口请求路径规则
                .pathsToMatch("/media/**")
                .build();
    }

    @Bean
    public GroupedOpenApi payApi() {
        return GroupedOpenApi.builder()
                // 分组名称
                .group("支付模块")
                // 接口请求路径规则
                .pathsToMatch("/pay/**")
                .build();
    }

    @Bean
    public GroupedOpenApi studyApi() {
        return GroupedOpenApi.builder()
                // 分组名称
                .group("学习模块")
                // 接口请求路径规则
                .pathsToMatch("/study/**")
                .build();
    }

    /**
     * 配置基本信息
     */
    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("Knife4j整合Swagger3 Api接口文档")
                        .version("v1.0.0")
                );
    }
}

